جزوه · فصل سوم · جلسه ۳۴ · هارد دیسک در لینوکس ← بازگشت به فهرست
📘 فصل سوم · جلسه ۳۴ هارد دیسک در لینوکس
📅 تاریخ: شنبه، ۲۴ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی) · 📦 Red Hat

▍ مقدمه

در لینوکس، همه چیز به صورت فایل نمایش داده می‌شود و دیسک‌های سخت (Hard Disks) نیز از این قاعده مستثنی نیستند. درک انواع دیسک‌ها، روش‌های پارتیشن‌بندی و ساختارهای پیشرفته مانند LVM و RAID برای هر مدیر سیستمی ضروری است. در این جلسه، این مفاهیم را به‌طور کامل بررسی می‌کنیم.

▍ انواع هارد دیسک در لینوکس

🔵 PATA (Parallel ATA)

  • از رابط موازی (Parallel) برای اتصال استفاده می‌کند.
  • نیاز به کابل پهن (40 یا 80 رشته) دارد.
  • در هر آداپتور، حداکثر ۲ دستگاه پشتیبانی می‌شود.
  • سرعت کمتر نسبت به SATA.
  • در سیستم‌های جدید کمتر استفاده می‌شود.

🟢 SATA (Serial ATA)

  • از رابط سریال (Serial) برای اتصال استفاده می‌کند.
  • سرعت بسیار بالاتر از PATA.
  • در هر آداپتور، حداکثر ۴ دستگاه پشتیبانی می‌شود.
  • کابل‌های باریک و بلندتر.
  • رایج‌ترین نوع دیسک در سیستم‌های امروزی.
  • در لینوکس با نام /dev/sdX شناسایی می‌شود.

🔴 SCSI (Small Computer System Interface)

  • از رابط موازی با سرعت بالا استفاده می‌کند.
  • سرعت قابل مقایسه با SATA.
  • در هر آداپتور، حداکثر ۸ دستگاه پشتیبانی می‌شود.
  • معمولاً در سرورها و سیستم‌های ذخیره‌سازی استفاده می‌شود.
  • در لینوکس با نام /dev/sdX شناسایی می‌شود (مانند SATA).
  • گران‌تر از SATA.
💡 نکته مهم:

در لینوکس، تمام دیسک‌های SATA و SCSI با نام /dev/sdX نمایش داده می‌شوند. X یک حرف از a تا z است. مثلاً /dev/sda اولین دیسک، /dev/sdb دومین دیسک و ... .

▍ پارتیشن‌بندی دیسک (Partitioning)

پارتیشن (Partition) یک بخش مستقل از دیسک است که سیستم‌عامل آن را به عنوان یک فضای ذخیره‌سازی جداگانه در نظر می‌گیرد. پارتیشن‌بندی به شما کمک می‌کند تا داده‌ها را بهتر سازماندهی کنید، مثلاً داده‌های سیستمی را از داده‌های کاربران جدا کنید. اگر یک کاربر فضای دیسک را پر کند، سیستم‌عامل همچنان فضای کافی برای کار کردن در پارتیشن مجزا خواهد داشت.

• روش‌های پارتیشن‌بندی: MBR و GPT

📀 MBR (Master Boot Record)

  • روش قدیمی که با BIOS استفاده می‌شود.
  • حداکثر ۴ پارتیشن اصلی (Primary) پشتیبانی می‌کند.
  • برای ایجاد پارتیشن‌های بیشتر، از پارتیشن توسعه‌یافته (Extended) استفاده می‌شود.
  • پارتیشن‌های توسعه‌یافته به چند پارتیشن منطقی (Logical) تقسیم می‌شوند.
  • حداکثر حجم دیسک قابل پشتیبانی: ۲ ترابایت (TB)
  • در لینوکس، پارتیشن‌های اصلی شماره‌های ۱ تا ۴ و پارتیشن‌های منطقی شماره‌های ۵ به بالا را دریافت می‌کنند.

💿 GPT (GUID Partition Table)

  • روش جدید که با UEFI استفاده می‌شود.
  • حداکثر ۱۲۸ پارتیشن پشتیبانی می‌کند.
  • نیازی به پارتیشن توسعه‌یافته ندارد.
  • همه پارتیشن‌ها مستقیماً قابل ایجاد هستند.
  • حداکثر حجم دیسک قابل پشتیبانی: ۹.۴ زتابایت (ZB)
  • در لینوکس، پارتیشن‌ها به ترتیب شماره‌گذاری می‌شوند (/dev/sda1, /dev/sda2, ...).

• پارتیشن‌های Extended و Logical (در MBR)

در روش MBR، تنها ۴ پارتیشن اصلی قابل ایجاد است. برای ایجاد پارتیشن‌های بیشتر، باید یکی از پارتیشن‌های اصلی را به عنوان پارتیشن توسعه‌یافته (Extended) تعریف کرد. این پارتیشن به‌عنوان یک کانتینر عمل می‌کند و می‌توان آن را به چند پارتیشن منطقی (Logical) تقسیم کرد.

✅ مثال:

فرض کنید یک دیسک با MBR داریم. پارتیشن‌های زیر را ایجاد می‌کنیم:

  • /dev/sda1 → پارتیشن اصلی ۱ (برای بوت)
  • /dev/sda2 → پارتیشن اصلی ۲ (برای ریشه)
  • /dev/sda3 → پارتیشن اصلی ۳ (برای swap)
  • /dev/sda4 → پارتیشن توسعه‌یافته (Extended)
  • /dev/sda5 → پارتیشن منطقی ۱ (درون Extended)
  • /dev/sda6 → پارتیشن منطقی ۲ (درون Extended)

همان‌طور که می‌بینید، پارتیشن‌های منطقی از شماره ۵ شروع می‌شوند.

▍ LVM (Logical Volume Manager)

LVM یک لایه انتزاعی بین دیسک‌های فیزیکی و سیستم فایل است که مدیریت بسیار انعطاف‌پذیری را فراهم می‌کند. با LVM می‌توانید دیسک‌های مختلف را به یک حجم منطقی ترکیب کنید و اندازه آن را به‌صورت پویا تغییر دهید.

🟣 Physical Volume (PV)

  • یک پارتیشن یا کل یک دیسک که به LVM اضافه شده است.
  • مثال: /dev/sda یا /dev/sda1

🟢 Volume Group (VG)

  • مجموعه‌ای از چند Physical Volume که با هم یک گروه را تشکیل می‌دهند.
  • فضای ذخیره‌سازی یکپارچه از چند دیسک.

🟠 Logical Volume (LV)

  • بخش‌هایی از Volume Group که به‌عنوان پارتیشن استفاده می‌شوند.
  • مشابه پارتیشن، اما با قابلیت تغییر اندازه پویا.
  • در /dev/mapper/ قرار می‌گیرند.
💡 مزایای LVM:
  • تغییر اندازه (Resize) پارتیشن‌ها به‌صورت پویا و بدون نیاز به ری‌بوت.
  • امکان ترکیب چند دیسک به یک حجم منطقی بزرگ.
  • ایجاد Snapshot (نقطه بازیابی) از پارتیشن‌ها.
  • مدیریت آسان‌تر فضای ذخیره‌سازی در سرورها.

▍ RAID (Redundant Array of Independent Disks)

RAID یک تکنولوژی است که چند دیسک را به‌عنوان یک دیسک منطقی ترکیب می‌کند تا عملکرد را افزایش دهد یا تحمل‌پذیری خطا (Fault Tolerance) را فراهم کند.

سطح RAID توضیح حداقل دیسک مزایا معایب
RAID 0 Disk Striping: داده‌ها بین چند دیسک تقسیم می‌شوند. 2 سرعت بالا (افزایش عملکرد) بدون تحمل‌پذیری خطا (اگر یک دیسک خراب شود، همه داده‌ها از بین می‌روند)
RAID 1 Disk Mirroring: داده‌ها روی دو دیسک کپی می‌شوند. 2 تحمل‌پذیری خطا بالا (اگر یک دیسک خراب شود، دیسک دیگر کار می‌کند) فضای ذخیره‌سازی نصف می‌شود (۵۰٪ کارایی)
RAID 4 Striping with Parity: داده‌ها تقسیم می‌شوند و یک بیت Parity روی یک دیسک جداگانه ذخیره می‌شود. 3 تحمل‌پذیری خطا (با خرابی یک دیسک، داده‌ها قابل بازیابی است) دیسک Parity می‌تواند گلوگاه عملکردی شود.
RAID 5 Striping with Distributed Parity: داده‌ها و Parity به‌صورت توزیع‌شده روی همه دیسک‌ها ذخیره می‌شوند. 3 تعادل خوب بین عملکرد و تحمل‌پذیری خطا (خرابی یک دیسک قابل تحمل است) عملکرد در هنگام بازسازی (Rebuild) کاهش می‌یابد.
RAID 6 Striping with Double Parity: دو بیت Parity روی دیسک‌های مختلف ذخیره می‌شود. 4 تحمل‌پذیری خطا بالا (خرابی دو دیسک هم قابل تحمل است) فضای بیشتری برای Parity اشغال می‌شود (کمتر از RAID 5)
RAID 10 Mirroring + Striping: ترکیبی از RAID 1 و RAID 0. 4 هم عملکرد بالا و هم تحمل‌پذیری خطا عالی هزینه بالا (به ۵۰٪ فضای دیسک نیاز دارد)
⚠️ نکته مهم:

RAID جایگزین پشتیبان‌گیری (Backup) نیست. حتی با RAID 1 یا RAID 5، اگر یک فایل به‌طور تصادفی حذف شود یا سیستم دچار حمله شود، داده‌ها از بین خواهند رفت. RAID فقط در برابر خرابی سخت‌افزاری دیسک محافظت می‌کند.

✅ تمرین پیشنهادی:
  • با lsblk یا fdisk -l (با دسترسی root) اطلاعات دیسک‌های سیستم خود را بررسی کنید.
  • با sudo fdisk /dev/sdX (مراقب باشید!) جدول پارتیشن یک دیسک را مشاهده کنید.
  • در مورد نوع پارتیشن‌بندی (MBR یا GPT) دیسک خود با sudo parted -l تحقیق کنید.
  • با sudo lvmdiskscan دیسک‌های LVM موجود در سیستم را شناسایی کنید.
  • در صورت دسترسی به سرور، با cat /proc/mdstat وضعیت RAID (در صورت وجود) را بررسی کنید.